The present invention relates generally to using an array of servers to transmit information to one or more clients, and more particularly to recovering lost data due to failure in servers.
The data networking industry has been growing at a tremendous rate. In the corporate space, local area networks (LANs) have become mission critical tools for basic business operations, and corporate communication. In the public space, the explosion of Internet usage and telecommuting has fueled demand for networking products.
One primary driver of the increase in data networking is the increase in the number of end users attached to LANs and wide area networks (WANs). In the past few years, we have seen a dramatic increase in the number of individuals accessing the Internet. The graphically-based, easy to use web browsers have transformed the Internet from a communication tool for a select group of elitists to a popular communications medium. To improve employee productivity, reduce costs and remain competitive, many corporations have been promoting remote LAN connectivity. Businesses are demanding high-speed access to information from a variety of locations. Companies are increasingly providing employees with communications tools that allow them to access corporate databases from branch offices or send electronic mails and transfer files from their laptops while traveling.
Not only has the number of end users increased tremendously, the amount of data being transferred have also been surging in an alarming rate. The increasing focus on multimedia in the World Wide Web is causing larger and larger files of data to be transferred across the Internet. Historically, information on the Web was heavily text-based. As the Internet user base grows, graphic files have become more and more common. Such files require tremendously more data than texts. For example, a page of text may only occupy a few kilobytes, while a picture requires a few megabytes, and a compressed movie a gigabyte. All these create a huge demand for large networks.
Many networks ultimately connect to personal computers, accessed by users. Such personal computers are sometimes known as client computers. These client computers are connected to server computers, which hold much more information. Actually, the ease of retrieving multimedia information on-line using a client-server model has become the norm of most networking applications.
Many of today's servers run on a single machine connected to a network. The idea is that the servers do not fail. Most of the problems are perceived to come from the transmission media If a client does not receive any part of a piece of information, the client will ask the server to re-transmit, because, probably, the transmission media have lost packets of the information. Servers are assumed to operate without malfunctioning. However, servers do fail. When they fail, the information in them is lost. To remedy this problem, one may replicate data on several servers. This type of technique is known as service replication, which can increase the original storage by a few times. With multimedia data typically requiring significant amount of storage, service replication might take too much storage space.
There is another prior art technique known as service partitioning, where data are partitioned and distributed among server clusters. This technique has previously been described, for example, in "Design and Implementation of the SUN Network File System," written by Sandberg et. al. and published in In Proceedings of the Summer Usenix Conference on 1985. Service partitioning allows the loading to be shared by several servers. However, if a server among the cluster of servers is down, information is again lost.
Another problem encountered in server failure is the disruption in information flow. For video-on-demand services, the video signals have to be continuous. We do not want to watch a movie that breaks or slows down in the middle due to server failure.
It should be apparent from the foregoing that there is still a need to protect information loss due to server failure. The protection mechanism should not significantly increase server storage, and should maintain continuous information flow if there is failure in servers. With networks permeating into every corner of our society, such needs will only increase as time goes by.